<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckAdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
        //判断用户有登录，如果没登录，跳转到登录页面
        $bool = auth()->check();
        if (!$bool) {
            return redirect(route('admin.login'))->withErrors('未登录，请先登录');
        }
        //判断当前用户访问的url是否自己有权限，如果没有则提示无权限
        //在渲染之前就需要做一些权限控制
        //取出登录成功存到session的数据
        $auths = session('admin.auths');

//        if ($auths !== true) {
//            //先获取当前访问的地址
//            $currentRouteName = $request->route()->getName();
//
//            //然后判断当前访问的地址url有没有在auths这个数组里，如果在则有权限，如果不在则没有权限
//            //合并数组，把共有权限加上 array_merge() 数组合合并函数  array+array
//            //array_filter 过滤掉空值 null 空数组 布尔类型的数据
//            $auths = array_filter(array_merge($auths, config('rbac.allow_route')));
////            $auths = $auths+config('rbac.allow_route'));
//
//            $bool = in_array($currentRouteName, $auths);
//            if (!$bool) {
//                //无权限跳转一个页面
//                return redirect(route('admin.403'));
//            }
//        }

        //如果登录了就继续执行
        return $next($request);
    }
}
